home *** CD-ROM | disk | FTP | other *** search
- //-----------------------------------------------------------------------------
- //
- // Sample Name: LobbyClient Sample
- //
- // Copyright (c) 1999-2001 Microsoft Corporation. All rights reserved.
- //
- //-----------------------------------------------------------------------------
-
-
- Description
- ===========
- LobbyClient is a simple lobby client. It displays all registered DirectPlay
- applications on the local system. It allows the
- user to launch one or more of these applications using a chosen
- service provider. A launched lobbied application may be told to either
- join or host a game.
-
- Path
- ====
- Source: DXSDK\Samples\Multimedia\DirectPlay\LobbyClient
-
- Executable: DXSDK\Samples\Multimedia\DirectPlay\Bin
-
- User's Guide
- ============
- Choose launch settings from dialog, and click "Launch App". The
- lobby client will launch the app selected based on the settings in the UI.
- The active connections list will display the handle to all the current
- lobbied applications. Clicking on "Send Message" will send a lobby message
- to the lobbied application. This done mainly for demonstration purposes. A more
- complex lobby client may want to use this functionality in a more meaningful way
- by passing a message that the lobbied application responds to.
-
- Programming Notes
- =================
- * Initialize DirectPlay. See InitDirectPlay()
- 1. Init COM with CoInitialize()
- 2. Create a IIDirectPlay8Peer with CoCreateInstance()
- 3. Call IDirectPlay8Peer::Initialize to tell the interface about our
- message handler
- 4. Create a IDirectPlay8LobbyClient with CoCreateInstance()
- 5. Call IDirectPlay8LobbyClient::Initialize to tell the interface
- about our lobby message handler
-
-
- * Initialize dialog box. See OnInitDialog()
- 1. Enumerate the registered lobbied applications and display them
- in the dialog listbox. See EnumRegisteredApplications()
- 2. Enumerate the DirectPlay service providers and display them
- in the dialog listbox. See EnumServiceProviders()
- 3. Whenever a new service provider is selected (and upon init) then
- enumerate the service provider's adapters. See EnumAdapters().
-
- * When "Launch App" button is clicked. See LaunchApp()
- 1. Fill out a DPL_CONNECT_INFO struct. This is complex
- since it contains the host and device addresses as well as
- the DPN_APPLICATION_DESC. See LaunchApp() and
- AllocAndInitConnectSettings().
- 2. Call IDirectPlay8LobbyClient::ConnectApplication() passing in
- the DPL_CONNECT_INFO struct.
- 3. Free the DPL_CONNECT_INFO struct. This is also complex since this
- struct has a number of DPlay addresses. See FreeConnectSettings().
-
- * Upon DirectPlay Lobby messages. See DirectPlayLobbyMessageHandler()
- - Upon DPL_MSGID_DISCONNECT:
- pDisconnectMsg->hDisconnectId will contain the handle of the
- lobbied application that was disconnected, and
- pDisconnectMsg->hrReason will be the reason. This simple
- sample just pops up a message box.
- - Upon DPL_MSGID_RECEIVE:
- The lobbied application sent the client data. This simple sample
- doesn't respond to any message.
- - Upon DPL_MSGID_SESSION_STATUS:
- A lobbied application has changed its status. pStatusMsg->hSender
- will one of several predefined status codes. This simple
- sample just updated the UI showing that the lobby status has
- updated, however more complex lobby clients many want to take action.
- - Upon DPL_MSGID_CONNECTION_SETTINGS:
- A lobbied application has changed its connection settings. This
- simple lobby client doesn't take any action however, more complex
- clients may want to take action.
-
- * When "Send Message" is clicked. See SendMsgToApp()
- Call IDirectPlay8LobbyClient::Send() with the handle of the
- lobbied application to send the message to, and the buffer to send.
-
- * When "Disconnect" is clicked. See DisconnectFromApp()
- Call IDirectPlay8LobbyClient::ReleaseApplication() with the handle of
- lobbied application to disconnect from.
-
-